#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
#include<stdlib.h>

int val = 100;
int main()
{

    printf("I am parent.pid:%d,ppid:%d,val:%d,&val:%p\n",getpid(),getppid(),val,&val);
    pid_t id = fork();
    if(id == 0)
    {
        //child
        int cnt = 0;
        while(1)
        {
            printf("I am child.pid:%d,ppid:%d,val:%d,&val:%p\n",getpid(),getppid(),val,&val);
            cnt++;
            if(cnt == 5)
            {
                val = 300;
                printf("val:%d=>%d\n",100,300);
            }
            sleep(1);
        }
    }
    else
    {
        //parent
        while(1)
        {
            printf("I am parent.pid:%d,ppid:%d,val:%d,&val:%p\n",getpid(),getppid(),val,&val);
            sleep(1);
        }
    }
}



//int main()
//{
//    char* path = getenv("shh");
//    if(path == NULL) return 1;
//    else printf("%s\n",path);
//    return 0;
//}


//int main(int argc,char*argv[],char* env[])
//{
//
//    for(int i=0; env[i]; i++)
//    {
//        printf("environ[%d]:%s\n",i,env[i]);
//    }
//    return 0;
//}


//int main()
//{
//    extern char** environ;
//    for(int i=0;environ[i];i++)
//    {
//        printf("environ[%d]:%s\n",i,environ[i]);
//    }
//    return 0;
//}
//int val =100;
//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        printf("val:%d",val);
//    }
//    else
//    {
//        // parent
//        while(1)
//        {
//            printf("i am parent. pid:%d,ppid:%d\n",getpid(),getppid());
//            sleep(2);
//        }
//    }
//    return 0;
//}



//int main(int argc, char* argv[])
//{
//    if(argc != 2)
//    {
//       printf("Usage: -[a,b,c,d]\n"); 
//       return 1;
//    }
//
//    if(strcmp(argv[1],  "-a") == 0)
//    {
//        printf("function1\n");
//    }
//    else if(strcmp(argv[1],  "-b") == 0)
//    {
//        printf("function2\n");
//    }
//    else if(strcmp(argv[1],  "-c")== 0)
//    {
//        printf("function3\n");
//    }
//    else if(strcmp(argv[1],  "-d") == 0)
//    {
//        printf("function4\n");
//    }
//    else{
//        printf("no function\n");
//    }
//    return 0;
//}
//int main()
//{
//    while(1)
//    {
//        printf("i am pocess.pid:%d\n",getpid());
//        sleep(1);
//    }
//    return 0;
//}
//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        int cnt = 5;
//        while(cnt--)
//        {
//            printf("I am child.pid:%d\n",getpid());
//            sleep(1);
//        }
//    }
//    else
//    {
//        int cnt =5;
//        while(cnt)
//        {
//            printf("I am parent.pid:%d\n",getpid());
//            sleep(1);
//        }
//    }
//    return 0;
//}
//void RunChild() { 
//    while(1) 
//    {
//        printf("I am child.pid:%d , ppid:%d\n",getpid(),getppid());
//        sleep(3);
//    }
//}
//
//int main()
//{
//    const int n= 5;
//    for(int i=0; i<n; i++)
//    {
//        pid_t id = fork();
//        if(id == 0)
//        {
//            RunChild();
//        }
//        sleep(1);
//    }
//
//    while(1)
//    {
//        printf("I am parent.pid:%d , ppid:%d\n",getpid(),getppid());
//        sleep(1);
//
//    }
//

   // printf("process is coming\n");
   // sleep(1);
   // pid_t id = fork();
   // if(id == -1) return 1;
   // else if(id == 0)
   // {
   //     //child
   //    while(1)
   //    {
   //        printf("I am child. id:%d,ppid:%d\n",getpid(),getppid());
   //        sleep(2);
   //    }
   // }
   // else{
   //    //parent
   //    while(1)
   //    {
   //        printf("I am parent. id:%d,ppid:%d\n",getpid(),getppid());
   //        sleep(2);
   //    }
   // }
    //pid_t id = getpid();
    //pid_t ppid = getppid();
    //while(1)
    //{
    //
    //    printf("I am a process,pid:%d,ppid:%d\n",id,ppid);
    //    sleep(1);
    //}
//
//    return 0;
//}
